#前言
學了兩天pandas的一些用法之後,讓我們來做一些練習吧!
練習一:
載入一個包含學生試卷分數的CSV文件,計算出每個學生的平均分數,並找到平均分數最高的學生。
import pandas as pd
# 創建包含學生試卷分數的DataFrame
data = {
'Student': ['Student1', 'Student2', 'Student3', 'Student4', 'Student5'],
'Score': [85, 92, 78, 88, 95]
}
df = pd.DataFrame(data)
# 將DataFrame保存為CSV文件
df.to_csv('student_scores.csv', index=False)
# 載入CSV文件
df = pd.read_csv('student_scores.csv')
# 使用idxmax找出分數最高的學生
average_scores = df.loc[df['Score'].idxmax()]
print(f"分數最高的學生是:{average_scores['Student']},分數為:{average_scores['Score']}")
分數最高的學生是:Student5,分數為:95
練習二:
載入一個包含天氣數據的CSV文件,找出每個月的最高溫度和最低溫度的溫差,並列出當月溫差最大的值,最後找出哪個月份的溫差最大。
import pandas as pd
import random
from datetime import date, timedelta
# 建立日期範圍
start_date = date(2023, 1, 1)
end_date = date(2023, 12, 31)
date_range = [start_date + timedelta(days=i) for i in range((end_date - start_date).days + 1)]
# 建立最高溫度和最低溫度數據
max_tem = [random.randint(20,55) for _ in date_range]
min_tem = [random.randint(-10,20) for _ in date_range]
# 建立DataFrame
weather_data = pd.DataFrame({
'Date': date_range,
'Max Tem': max_temp,
'Min Tem': min_temp
})
# 將DataFrame存為CSV文件
weather_data.to_csv('weather_data.csv', index=False)
# 載入CSV文件
df = pd.read_csv('weather_data.csv')
df['Date'] = pd.to_datetime(df['Date'])
# 找出每個月的最高溫度和最低溫度
df['Month'] = df['Date'].dt.month
monthly_temperature_diff = df.groupby('Month').apply(lambda group: group['Max Tem'].max() - group['Min Tem'].min())
# 找出溫差最大的月份和溫差
max_temp_diff_month = monthly_temperature_diff.idxmax()
max_temp_diff_value = monthly_temperature_diff[max_temp_diff_month]
# 印出每個月的最大溫差
for month, temp_diff in monthly_temperature_diff.items():
print(f"{month}月的最大溫差為:{temp_diff} 度")
print(f"溫差最大的月份是:{max_temp_diff_month}月,溫差為:{max_temp_diff_value} 度")
1月的最大溫差為:80 度
2月的最大溫差為:83 度
3月的最大溫差為:82 度
4月的最大溫差為:85 度
5月的最大溫差為:79 度
6月的最大溫差為:81 度
7月的最大溫差為:85 度
8月的最大溫差為:82 度
9月的最大溫差為:84 度
10月的最大溫差為:84 度
11月的最大溫差為:84 度
12月的最大溫差為:84 度
溫差最大的月份是:4月,溫差為:85 度
pandas的練習就到這邊了喔。
---20230922---